#include <stdio.h>
#include <unistd.h>
#include "lcd.h"
#include "gpio.h"

gpio_t *gpio_spi_mosi, *gpio_spi_cs, *gpio_spi_clk;
void spi_gpio_init(void)
{
    gpio_spi_mosi = gpio_new();
    gpio_spi_cs = gpio_new();
    gpio_spi_clk = gpio_new();

    gpio_open_sysfs(gpio_spi_mosi, GPIO_SPI_MOSI, GPIO_DIR_OUT);
    gpio_open_sysfs(gpio_spi_cs, GPIO_SPI_CS, GPIO_DIR_OUT);
    gpio_open_sysfs(gpio_spi_clk, GPIO_SPI_CLK, GPIO_DIR_OUT);
}

static void spi_write_cmd(unsigned char addr,unsigned char val)
{
    unsigned short cmd = (val << 8) | addr;

	gpio_write(gpio_spi_cs, 0);
	for(int i = 0; i < 16; i++) {
		gpio_write(gpio_spi_clk, 0);
		if(cmd & 0x01) {
			gpio_write(gpio_spi_mosi, 1);
		} else {
			gpio_write(gpio_spi_mosi, 0);
		}
		
		usleep(20);
		gpio_write(gpio_spi_clk, 1);
		usleep(20);
		cmd >>= 1;
	}
	gpio_write(gpio_spi_cs, 1);
}

void sony_driver_brightness_level(int level)
{
    printf("lcd bright = %d\n\r",level);
    spi_write_cmd(0x1D, 40 + level * 15);
}